package org.bspv.pharma.business;

import java.util.List;

import org.bspv.pharma.model.Category;
import org.bspv.pharma.model.Drugstore;
import org.bspv.pharma.model.Packaging;
import org.bspv.pharma.model.Place;
import org.bspv.pharma.model.StandardEquipment;
import org.bspv.pharma.model.StandardEquipmentDetail;
import org.bspv.pharma.model.TypeOfSupply;
/**
 * Service métier d'administration.
 * @author guillaume
 *
 */
public interface AdministrationBusinessService {

    /**
     * DRUGSTORE METHODS
     */

    Drugstore findDrugstore(String id);

    void deleteDrugstoreById(String id);

    List<Drugstore> findAllDrugstores();

    Drugstore saveDrugstore(Drugstore drugstore);

    /**
     * CATEGORY METHODS
     */

    void deleteCategoryById(Long id);

    List<Category> findAllCategories();

    Category findCategory(Long id);

    Category saveCategory(Category category);

    /**
     * PACKAGING METHODS
     */

    void deletePackagingById(Long id);

    List<Packaging> findAllPackaging();

    Packaging findPackaging(Long id);

    Packaging savePackaging(Packaging packaging);

    /**
     * PLACE METHODS
     */

    void deletePlaceById(Long id);

    List<Place> findAllPlaces();

    Place findPlace(Long id);

    Place savePlace(Place place);

    /**
     * TYPE_OF_SUPPLY METHODS
     */

    void deleteTypeOfSupplyById(Long id);

    List<TypeOfSupply> findAllTypeOfSupplies();

    TypeOfSupply findTypeOfSupply(Long id);

    TypeOfSupply saveTypeOfSupply(TypeOfSupply typeOfSupply);

    /**
     * STANDARD_EQUIPMENT METHODS
     */

    void deleteStandardEquipmentById(Long id);

    List<StandardEquipment> findAllStandardEquipments();

    StandardEquipment findStandardEquipment(Long id);

    StandardEquipment saveStandardEquipment(StandardEquipment standardEquipment);

    List<StandardEquipment> findStandardEquipments(List<Place> places);

    List<StandardEquipmentDetail> findStandardEquipmentDetails(StandardEquipment element);

    List<StandardEquipmentDetail> saveStandardEquipmentDetails(List<StandardEquipmentDetail> details);

}
